<?php

declare(strict_types=1);

namespace App\Music\Model;

use Hyperf\Database\Model\SoftDeletes;
use Mine\MineModel;

/**
 * @property int $id 
 * @property int $song_id 歌曲 ID
 * @property string $file_name 文件名
 * @property string $file_url 
 * @property string $pwd 歌曲下载密码
 * @property string $file_type 文件类型（如 MP3、FLAC）
 * @property int $size 文件字节大小
 * @property int $bit_rate 比特率
 * @property string $source 来源
 * @property int $status 状态:0=否,1=是
 * @property int $duration 音乐时长，单位为秒
 * @property array $source_extend 来源状态
 * @property string $storage 存储位置
 * @property \Carbon\Carbon $created_at 添加时间
 * @property \Carbon\Carbon $updated_at 最后更新时间
 * @property string $deleted_at 
 */
class MusicSongFile extends MineModel
{
    use SoftDeletes;
    /**
     * The table associated with the model.
     */
    protected ?string $table = 'music_song_file';

    /**
     * The attributes that are mass assignable.
     */
    protected array $fillable = ['id', 'song_id', 'file_name', 'file_url', 'pwd', 'file_type', 'size', 'bit_rate', 'source', 'status', 'duration', 'source_extend', 'storage', 'created_at', 'updated_at', 'deleted_at'];

    /**
     * The attributes that should be cast to native types.
     */
    protected array $casts = ['id' => 'integer', 'song_id' => 'integer', 'size' => 'integer', 'bit_rate' => 'integer', 'status' => 'integer', 'duration' => 'integer', 'source_extend' => 'array', 'created_at' => 'datetime', 'updated_at' => 'datetime'];

    /**
     * 歌曲列表
     * */
    public function song()
    {
        return $this->belongsTo(MusicSong::class, 'song_id', 'id');
    }
}
